#pragma once
#include <iostream>

template <class T>
inline void printContainer(const T &container)
{
    for (auto &e : container)
    {
        std::cout << e << std::endl;
    }
    return;
}

template <class T>
inline void printContainerPair(const T &container)
{
    for (auto &elem : container)
    {
        std::cout << elem.first << ":" << elem.second << std::endl;
    }
    return;
}

template <class T>
inline void printContainerOptional(const T &container)
{
    for (const auto &elem : container)
    {
        if (elem)
            std::cout << elem.value() << std::endl;
        else
            std::cout << "this value not exist" << std::endl;
    }
}
